#include <REGX52.H>
#include "Delay.h"

sbit XPT2046_CS 	= P3^5;
sbit XPT2046_DCLK 	= P3^6;
sbit XPT2046_DIN 	= P3^4;
sbit XPT2046_DOUT 	= P3^7;




 

unsigned int XPT2046_ReadAD(unsigned char Command)
{
	unsigned char i;
	unsigned int ADValue;
	XPT2046_DCLK = 0;
	XPT2046_CS = 0;
	
	for(i=0;i<8;i++)
	{
		XPT2046_DIN = Command & (0x80>>i);
		XPT2046_DCLK = 1;
		Delay(1);		//时序太快了？  加了之后数值就可以变化
		XPT2046_DCLK = 0;//连续发出八位
	}
	
	for(i=0;i<16;i++)	//连续取出十六位
	{
		XPT2046_DCLK = 1;
		XPT2046_DCLK = 0;//下降沿是读出数据
		if(XPT2046_DOUT) {ADValue |= (0x8000>>i);}
	}	
	XPT2046_CS = 1;	//最后置高
	//0x08 --- 0000 1000
	if(Command & 0x08)//如果是8位数据，就右移（16-8）=8位
	{	// 与0x08,是 与 倒数第四位（寄存器里的）
		return ADValue >> 8;	//取出16位，后八位都是0填充，再右移回去
	}
	else//如果是12位数据，就右移16-12=4位
	{
		return ADValue >> 4;
	}
	
}

 
